// グローバル変数
var loading_icon = "<img class=\"loading_icon\" src=\"image/loading_icon.gif\" />";
var logged_in = false;
var loading = false;
var doNotUpdate = false;
var tabsInitialized = false;
var helpLoading = false;
var disabledTabs = [];
var currentPage = -1;

$(document).ready(function() {
	$(window).load(function() {
		if (location.hash == "") {
			initTabs();
		}
		else {
			updatePage();
		}
		
		if ($("#loggedin").val() == "true") {
			logged_in = true;
		}

		if (!logged_in) {
			logout();
		}
		
		if (logged_in && $("#group_set").val() == "false") {
			disableFunctionsTab();
		}
		
		$(window).bind('hashchange', function(event) { 			
			updatePage();
		});
				
		preload_image = new Image(31,31); 
		preload_image.src="image/loading_icon.gif"; 
	});
});

// メッセージを表示する
function showMessage(msg) {
	$("#message .messageBoxMain").html(msg);
	$("#message").show();
}

// メッセージボックスを非表示にする
function hideMessage() {
	$("#message").hide();
}

// エラーを表示する
function showError(msg) {
	$("#error .errorBoxMain").html(msg);
	$("#error").show();
}

// エラーボックスを非表示にする
function hideError() {
	$("#error").hide();
}

// ヘルプの窓を表示する
function showHelp(page) {
	data = "post_data=true&action=show_help&page=" + encodeURI(page);
	
	$(".Help img").attr("src", "image/loading_icon.gif");
	$(".Help img").css("cursor", "normal");
	
	helpLoading = true;
	
	$.ajax ({
		type: "POST",
		url: "ajax.php",
		data: data,
		success: function (result) {
			$(".Help img").attr("src", "image/Help_Button.gif");
			$(".Help img").css("cursor", "pointer");
			
			pageTitle = location.hash.substring(2).split("/")[0];
			
			$("#help").html(result);
			$("#help").dialog ({
				autoOpen: true,
				title:  "ヘルプ － " + pageTitle,
				height: 550,
				width: 600,
				modal: true,
				resizable: true,
				buttons: {
					"閉じる": function() {
						$( this ).dialog( "close" );
					}
				}
			});
		}
	});
}

// タブ機能の初期処理
function initTabs(tab, page) {
	tabsInitialized = true;
	
	if (tab !== undefined && page !== undefined) {
		selectedTab = tab;
		
		var url = $("#tabs ul li:eq(" + selectedTab + ") a").attr("href");
		
		$("#tabs ul li:eq(" + selectedTab + ") a").attr("href", page);
	}
	else {
		startTab = parseInt($("#start_tab").val());
		selectedTab = startTab;
	}

	$( "#tabs" ).tabs( {
		spinner: '',
		idPrefix: 'tab',
		cache: false,
		selected: selectedTab,
		disabled: disabledTabs,
		select: function(event, ui) {
			console.log("select");
			// ロード中でない場合
			if (!loading) {
				loading = true;
				var tabID = "#tab" + (ui.index + 1);
				$(tabID).html(loading_icon);
							
				// ハッシュをタブの名前に更新する
				tabTitle = $('.ui-tabs-nav li:eq(' + ui.index + ') a').html();
				
				doNotUpdate = true;
				location.hash = "#/" + tabTitle;
			}
			// ロード中はページを変えられない
			else {
				return false;
			}
		},
		load: function(event, ui) {
			console.log("load");
			loading = false;
			doNotUpdate = false;
			
			// ログインしていないと、他のタブを選択できないようにする
			if (ui.panel.id == "tab1" && !logged_in) {
				$( "#tabs").tabs("option", "disabled", [1, 2]);
			}
		},
		show: function(event, ui) {
			console.log("show");
			loading = false;
			$("#tab1").html(loading_icon);
			$("#tab2").html(loading_icon);
			$("#tab3").html(loading_icon);
		}
	});
	
	$( "#tabs").show();
	
	if (tab !== undefined && page !== undefined) {
		$( "#tabs").tabs("url", tab, url);
	}
}

// 機能タブを有効にする
function enableFunctionsTab() {
	disabledTabs = [];
	$( "#tabs" ).tabs("option", "disabled", []);
}

// 機能タブを無効にする
function disableFunctionsTab() {
	disabledTabs = [2];
	$( "#tabs" ).tabs("option", "disabled", [2]);
}

// ログアウトする
function logout() {
	logged_in = false;
	disabledTabs = [1, 2];
	$( "#tabs").tabs("option", "disabled", [1, 2]);
	$('#tabs li:eq(0) *:last').text('ログイン');
}

// ページを更新する機能
function updatePage() {	
	if (location.hash != "") {
		if (!loading && !doNotUpdate) {
			loading = true;
			
			console.log("updatePage");
			address = "ajax.php";
			page = encodeURI(location.hash.substring(1));
			data = "location_hash=" + page;
			
			$(".tab_content").html("");
			$("#tab1").html(loading_icon);
			$("#tab2").html(loading_icon);
			$("#tab3").html(loading_icon);
					
			$.ajax({
				type: "GET",
				url: address,
				data: data,
				success: function (result) {
					values = result.split(";");
					tab = values[0];
					tab = parseInt(tab);
					page = values[1];
					subpage = values[2];
					
					if (subpage)
						page += "?subpage=" + subpage
						
					console.log(page);

					links = $("#tabs > ul").find("li a");
					
					currentPage = tab;
					
					if (!tabsInitialized) {
						initTabs(tab, page);
					}
					else {
						$.ajax({
							type: "GET",
							url: page,
							success: function (result) {
								$("#tab" + (currentPage + 1)).html(result);
								loading = false;
							}
						});
					}
				}
			});
		}
	}
}

function loadPage(hash, subpage) {
	if (hash == "reload") {
		updatePage();
	}
	else if (hash && subpage) {
		location.hash = "/" + hash + "/" + subpage
		updatePage();
	}
	else if (hash) {
		location.hash = "/" + hash
		updatePage();
	}

	return false;
}